The present invention relates generally to a device addressing scheme, and more particularly to a method and apparatus for setting an address for each device of a device module.
The Fibre Channel Arbitrated Loop topology is defined in ANSI (American Standards Institute, Inc.) X3.230-1994, Fibre Channel--Physical and Signaling Interface (FC-PH), and ANSI X3.272-199 x, Fibre Channel--Arbitrated Loop (FC-AL-2), Rev. 5.2 which are both hereby incorporated by reference. The Fibre Channel Arbitrated Loop topology provides a general transport for upper level protocols such as the Intelligent Peripheral Interface (IPI), and the Small Computer System Interface (SCSI) command sets. The SCSI command set in particular has been commonly used with storage devices and storage modules having several drives. Furthermore, storage modules having 10 drives have become preferred by customers that utilize the SCSI command set in non-Fibre Channel environments.
There are basically two factors that have resulted in the customer preference for storage modules that contain 10 drives. One factor that has influenced customer preference for storage modules containing 10 drives is the fact that the standard 19 inch rack that is used to hold these drives is only wide enough to hold 10 standard drives. Manufactures have not increased the width of the rack for basically two reasons. Firstly, since standard 19 inch racks are easily obtainable, manufacturing costs are lower by using the standard size rack. Secondly, customers have grown accustomed to storage modules having a width of about 19 inches and would likely resist the change to a wider width.
Another factor for this customer preference for drive modules containing 10 drives is that the more drives that are in one storage module the lower the per drive cost of the storage module. This lower per drive cost results from the relatively fixed costs of the storage module (e.g. back plane, fan, power supply) being spread across more drives. Therefore, in order to reduce the per drive cost of the storage module, the storage module should contain as many drives as will fit in the storage module enclosure. As eluded to above, currently only up to 10 Fibre Channel Arbitrated Loop (FC-AL) drives will fit in a 19 inch rack. Therefore, due to customer preference for 19 inch racks and lower per disk cost of the storage module, a storage module utilizing a 19 inch rack and 10 drives has some market advantage.
Customers also prefer to have the option of upgrading their storage systems to provide for more storage capacity as their demand for storage capacity increases. One way to address this customer preference is to design a storage system to which additional storage modules may be easily added. However, in most storage systems, each drive of the storage system must have a separate address that is different than all other addresses of the storage system. This requirement of separate addresses for each drive can result in a problem when setting addresses of a newly added storage module if a scheme for assigning addresses to each drive of a storage module has not been set.
For example, if a storage system currently contains one storage module having 10 drives and there is no preset scheme for setting the addresses of the drives, then it may be very difficult for the customer to add another storage module to the storage system. This difficulty results because the customer has no simple way of assuring that the addresses of the drives of the newly added storage module will not conflict with the addresses of the already existing storage module of the storage system.
One way this problem has been addressed is to assign a module identifier to each storage module and to use the module identifier as part of the address for each drive of the storage module. For example, in a Fibre Channel Arbitrated Loop environment where each address is limited to only seven (7) bits, a different three bit module identifier could be assigned to each storage module and that same three bit module identifier could set the three most significant bits of the address of each drive of that storage module. Therefore, the three bit module identifier could be used to identify in which storage module a drive is located, and the remaining four bits of each drive's address could be used to identify the specific drive of the storage module.
Assuming the manufacturer has set the four least significant bits of each drive to a different value, this scheme makes it relatively easy for the customer to assure that no address conflicts will occur as a result of adding a storage module to the storage system. Under this scenario, all the customer needs to do is to set the three bit module identifier of the new storage module to a value that is different than the module identifiers of the already existing storage modules of the storage system. By doing so, the customer will assure that no drive of the storage system will have the same address as another drive of the storage system.
While this solution is quite simple to implement, it limits the storage system to a total of at most 80 drives. This limitation is a result of utilizing only three bits for the module identifier of each storage module and limiting each storage module to 10 drives. Because the module identifier is limited to three bits, only 2.sup.3 or 8 values may be represented by the module identifier. Therefore, since each storage module of the storage system needs its own unique module identifier, only 8 storage modules may exist in any one storage system. Furthermore, as stated above, since each storage module contains up to 10 drives, the storage system is limited to 8 storage modules of 10 drives each, or 80 drives total.
However this solution fails to efficiently utilize the available address space. In other words, the above solution utilizes only 80 of the 127 available addresses on a single fibre channel arbitrated loop, and as a result unnecessarily limits the number of drives the storage system may include. What is needed, therefore, is a method and apparatus which sets addresses for each drive of a storage module such that each storage module may contain 10 drives, additional storage modules may be easily added to an existing storage system, and the address space may be better utilized so that more drives may exist in a single storage system.